from flask import render_template, redirect, url_for, request, flash, session
from user.forms import LoginForm, RegisterForm
from models import UserActual, db  # 使用与实际数据库匹配的模型
from datetime import datetime
from user import user_bp

@user_bp.route('/login', methods=['GET', 'POST'])
def login():
    # 检查用户是否已登录
    if session.get('user_id'):
        flash('您已经登录了！', 'info')
        return redirect(url_for('main.index'))
    
    form = LoginForm()
    if form.validate_on_submit():
        username = form.username.data
        password = form.password.data
        
        # 查询用户 - 使用name字段而不是username
        user = UserActual.query.filter_by(name=username).first()
        
        if user and user.password == password:  # 明文密码验证
            # 登录成功，设置session
            session['user_id'] = user.id
            session['username'] = user.name
            
            db.session.commit()
            
            flash(f'欢迎回来，{username}！', 'success')
            return redirect(url_for('main.index'))
        else:
            flash('用户名或密码错误！', 'danger')
    
    return render_template('login.html', form=form)

@user_bp.route('/register', methods=['GET', 'POST'])
def register():
    # 检查用户是否已登录
    if session.get('user_id'):
        flash('您已经登录了！', 'info')
        return redirect(url_for('main.index'))
    
    form = RegisterForm()
    if form.validate_on_submit():
        username = form.username.data
        password = form.password.data
        confirm_password = form.confirm_password.data
        
        # 检查密码是否匹配
        if password != confirm_password:
            flash('两次输入的密码不一致！', 'danger')
            return render_template('register.html', form=form)
        
        # 检查用户名是否已存在 - 使用name字段
        existing_user = UserActual.query.filter_by(name=username).first()
        if existing_user:
            flash('用户名已存在！', 'danger')
            return render_template('register.html', form=form)
        
        # 创建新用户 - 使用实际的数据库字段
        new_user = UserActual(
            name=username,  # 使用name字段而不是username
            password=password,  # 明文存储
            email=form.email.data,
            addr='',  # 默认空地址
            collect_id='',  # 默认空收藏ID
            seen_id=''  # 默认空浏览ID
        )
        
        db.session.add(new_user)
        db.session.commit()
        
        flash('注册成功！请登录。', 'success')
        return redirect(url_for('user.login'))
    
    return render_template('register.html', form=form)

@user_bp.route('/logout')
def logout():
    session.clear()
    flash('您已成功退出登录！', 'info')
    return redirect(url_for('main.index'))

@user_bp.route('/user')
def user_profile():
    # 检查用户是否已登录
    if not session.get('user_id'):
        flash('请先登录！', 'warning')
        return redirect(url_for('user.login'))
    
    # 获取用户信息 - 使用实际的模型
    user = UserActual.query.get(session['user_id'])
    
    return render_template('user.html', 
                          user=user,
                          registration_time='未知',  # 数据库中没有创建时间字段
                          last_login='未知')